package Pruebas;

import static org.junit.Assert.*;
import junit.framework.*;
import Codigo.PatronAcceso;
import BaseDatos.BD;
import org.junit.Test;

public class PatronAccesoTest extends TestCase
{

	//Atributos
	private String usuario1,usuario2,usuario3,usuario4;
	private String password1,password2,password3,password4;
	private PatronAcceso patron1,patron2,patron3,patron4,patron5;
	//---------------------------------------------------------------------------------------------------------------------------//
	public PatronAccesoTest(String name)
	{
		super(name);
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void setUp()
	{
		usuario1 = "elGon";
		usuario2 = "elDani";
		usuario3 = "laDanny";
		usuario4 = "otroUsuario";
		password1 = "proyecto";
		password2 = "proyecto";
		password3 = "proyecto";
		password4 = "otroPassword";
		patron1 = new PatronAcceso(usuario1,password1);
		patron2 = new PatronAcceso(usuario2,password2);
		patron3 = new PatronAcceso(usuario3,password3);
		patron4 = new PatronAcceso(usuario4,password4);
		patron5= new PatronAcceso(usuario1, password4);
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	//----------------------------------------------iniciaSesion()---------------------------------------------------------------//
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testIniciaSesionUsuarioCorrecto1() 
	{
		assertEquals(true,patron1.iniciaSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testIniciaSesionUsuarioCorrecto2() 
	{
		assertEquals(true,patron2.iniciaSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testIniciaSesionUsuarioCorrecto3() 
	{
		assertEquals(true,patron3.iniciaSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testUsuarioNoExiste() 
	{
		assertEquals(false,patron4.iniciaSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testUsuarioContrasenaIncorrecta() 
	{
		assertEquals(false,patron5.iniciaSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	//----------------------------------------------cierraSesion()---------------------------------------------------------------//
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testCierraSesionUsuarioCorrecto1()
	{
		assertEquals(true,patron1.cierraSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testCierraSesionUsuarioCorrecto2()
	{
		assertEquals(true,patron2.cierraSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testCierraSesionUsuarioCorrecto3()
	{
		assertEquals(true,patron3.cierraSesion());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	//----------------------------------------------establecePermisos()----------------------------------------------------------//
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testEstablecePermisosGerente()
	{
		assertEquals(0,patron1.establecePermisos());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testEstablecePermisosCocinero()
	{
		assertEquals(2,patron2.establecePermisos());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public void testEstablecePermisosEncargado()
	{
		assertEquals(1,patron3.establecePermisos());
	}
	//---------------------------------------------------------------------------------------------------------------------------//
	public static TestSuite suite()
	{
		TestSuite raiz = new TestSuite("Test Patron Control Acceso");
		
		TestSuite suiteLoginCorrecto = new TestSuite ("Test inicio y cierre correctos");
		suiteLoginCorrecto.addTest(new PatronAccesoTest("testIniciaSesionUsuarioCorrecto1"));
		suiteLoginCorrecto.addTest(new PatronAccesoTest("testCierraSesionUsuarioCorrecto1"));
		suiteLoginCorrecto.addTest(new PatronAccesoTest("testIniciaSesionUsuarioCorrecto2"));
		suiteLoginCorrecto.addTest(new PatronAccesoTest("testCierraSesionUsuarioCorrecto2"));
		suiteLoginCorrecto.addTest(new PatronAccesoTest("testIniciaSesionUsuarioCorrecto3"));
		suiteLoginCorrecto.addTest(new PatronAccesoTest("testCierraSesionUsuarioCorrecto3"));
		raiz.addTest(suiteLoginCorrecto);
		
		TestSuite suiteLoginIncorrecto = new TestSuite("Test inicio incorrecto");
		suiteLoginIncorrecto.addTest(new PatronAccesoTest("testUsuarioNoExiste"));
		suiteLoginIncorrecto.addTest(new PatronAccesoTest("testUsuarioContrasenaIncorrecta"));
		raiz.addTest(suiteLoginIncorrecto);
		
		TestSuite suitePermisosCorrectos = new TestSuite("Test establecePermisos correctos");
		suitePermisosCorrectos.addTest(new PatronAccesoTest("testEstablecePermisosGerente"));
		suitePermisosCorrectos.addTest(new PatronAccesoTest("testEstablecePermisosCocinero"));
		suitePermisosCorrectos.addTest(new PatronAccesoTest("testEstablecePermisosEncargado"));
		raiz.addTest(suitePermisosCorrectos);
		
		
		return raiz;		
	}

}
